package com.hm.hsw4;

import java.io.File;
import java.util.Scanner;

public class Demo2 {public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入路径");
        File f1 = new File(sc.nextLine());
        System.out.println("请输入需查找的文件名称");
        String fileName = sc.nextLine();
        findFile(f1, fileName);
    }

    /*1.先调用文件夹的listFiles方法，获取文件夹的一级内容，得到一个数组
    2.然后再遍历数组，获取数组中的File对象
    3.因为File对象可能是文件也可能是文件夹，所以接下来就需要判断
	判断File对象如果是文件，就获取文件名，如果文件名是`QQ.exe`则打印，否则不打印
	判断File对象如果是文件夹，就递归执行1,2,3步骤*/
    public static void findFile(File f1, String fileName) {
//        if(f1.getName().contains(fileName)){
//            System.out.println(f1.getName() + "  " + f1.getAbsolutePath() + " " + f1.length());
//        }
        //判断目录是否为null，路径是否存在，是否为文件夹
        if(f1 == null || !f1.exists() || f1.isFile()){
            return;
        }

        //获取目录下的所有一级文件
        File[] files = f1.listFiles();

        //判断数组是否为null，是否可以拿到一级文件

            //遍历数组，拿到每一个一级文件
            for (File f : files) {
                //判断是否为文件
                if(f.isFile()){
                    //判断是否为指定文件
                    if(f.getName().contains(fileName)){
                        System.out.println(f.getName() + "  " + f.getAbsolutePath() + " " + f.length());
                    }
                }else {
                        //是文件夹再次使用方法（递归）
                        findFile(f, fileName);
                }
            }
        }


}
